/**
 * @defgroup TestRandomAccessFile 关于Java随机文件读写机制的例子
 * @author 李焕帅
 * @version 0.1
 * @date 31/07/2012
 * @{
 */
package indd.lihs.basic.javabasictester.io;

import java.io.*;
import indd.lihs.basic.exceptions.*;

/**
 * @name 测试类定义
 * @{
 */
public class TestRandomAccessFile
{
    /**
     * 主函数
     * @param[in] args 参数字符串数组
     * @return void
     * @note 某个方法可能抛出某种异常,但其中没有定义相应的捕获代码.这时如果抛出,\n
     *       则系统直接退出该方法,并将异常发回给调用者
     */
    public static void main(String[] args) throws IOException
    {
        try
        {
            File file = new File("output.bin");
            if (file.exists()) throw new FileExistedException(file.getName());
            RandomAccessFile raf = new RandomAccessFile(file, "rw"); // 可读写
            for (int i = 1; i <= 8; i++)
                raf.writeInt(i * 771);
            raf.close();
            raf = new RandomAccessFile(file, "rw");
            raf.seek(2 * 4);    //第二个元素之后
            raf.writeInt(23);   //随机写入
            raf.close();
            raf = new RandomAccessFile(file, "r");
            long len = raf.length();
            long total = len / 4;
            System.out.println("len = " + len);
            int count = 0;
            while (count < 8)
            {
                long randomNum = (long) (Math.random() * total);
                raf.seek(randomNum * 4);
                System.out.print("(" + raf.getFilePointer() + ")");
                System.out.print(raf.readInt() + " ");
                count++;
            }
            raf.close();
            System.out.println();
        }
        catch (FileExistedException ex)
        { //文件已存在异常
            System.out.println(ex.getFileName() + " already existed.");
            ex.printStackTrace();
        }
    }
}

/** @}*/ // 模块定义
